آموزش برنامه نویسی در استریسک به زبان DIAL PLAN نویسنده: مسعود حیدری
برنامه نویسی استریسک به زبانplan dial مقدمه تح الت اخیشدسح ص خاتشات خ ا ی خ ت یشی آ ت س ت ایداد ت سؼ سیست ای استثاعی تحت ضثى تاثیشات تسضایی تش سیست ای ت ف ی س ذ پیطشفت آ ا داضت است. ا ش ص ضثى ای ت ف ی ثت ی تشس ئیچی ذاسی ت سشػتذس حا خای ضی ی تا ضثى ای ت ف ی IPBase ست ذ. دس ای یا سا ىاس ای تسیاسی ت سظ ضشوت ای خت ف اسائ ضذ است. یىی اص ؼش فتشی آ ا ضشوت دیدی ی تاضذ و سا ىاس ت تاص استشیسه سا ؼشفی د است. ا غ س و یذا یذ استشیسه یىی اص لذست ذتشی حث ب تشی سافت س ییچ ای ت تاص خ د دس د یای خاتشات IT ی تاضذ. یىی اص ػ ذ تشی دالی حث تیت آ ا ىا تش ا یسی ت صتا ای خت ف تش س ی ای سافت س ییچ سخ ای تفا ت آ ظیش Asterisknow-TrixBox-Elastix ی تاضذ. تا ت خ ت ای لات یت استشیسه دس سا ای اخیش سد ت خ ذیشا IT ساص ا ای خت ف لشاس شفت است. صیشا ا ىا ذیشیت ضخػی ساصی سیست ت ف ی آ ساص ا تا استفاد اص تش ا یسی فشا ی تاضذ. دس ای ما ت تش ا یسی dialplan ی پشداصی تا دس ظش داضت ای ىت و دسای صتا تش ا یسی اص تؼذاد صیادی function application استفاد ی ض د سؼی تش آ است و ت غ ست خا غ ختػش ت ؼشفی آ ا پشداخت تا روش ثا ای تؼذد ت ع س واستشدی اص ای ت اتغ استفاد ایی. Dialplan text ت ػ ا صتا اغ ی تش ا یسی ل ة استشیسه ض اخت ضذ است استشیسه ای صتا سا دس لا ة فش ت Dialplan ؼشفی ی ایذو ضا لس ت ای صیش ی تاضذ. Context Dial ا Plan ت تخص ای تفا تی تمسی ی ض ذ و ش تخص Context ا یذ ی ض د. ت ا ی دست سا ؼ ای ضت ضذ تؼذ اص تؼشیف ش context تخطی اص آ Context حس ب ی ض ذ. ش یه اص context ا داسای اسا ی حع ت فشد ی تاض ذ و ای اسا ی تی ػال ت [] لشاسداد ی ض ذ. context ات د غ ست [general[ [ globals [تؼشیف, ی ض ذ. ا ش.[incoming][out-00]. ی ت ا ذ ػذد حشف یا تشویثی اص آ ا تاضذ. تؼ ا ثا : context ىت : اص ا زاسی context ا ت غ ست [globals[ ]general], [default], خ دداسی و یذ. ىت : دس context ا ی ت ا یذ تا دست س context... Goto include ای دی ش سا فشاخ ا ی و یذ.
ضى صیش استثاط تی channel configuration context ا دس dialplan سا اص مغ ضش ع طا یذ ذ. اص تشی پاسا تش ای سد یاص دس تؼشیف extension channel وا تىس ا ی تاض ذ. Extensions Extensions :دس استشیسه ؼ ال ت یه ض اس یا ض اس اضاس ی ایذ.الص تزوشست و extensionیىیاص تشی تخص ای context ا حس ب ی ض د. دس ش context ی ت ا ت تؼذاد سد یاص اص extentions ا استفاد د. ت ع س و یExtensions ا ت س تخص تمسی ی ض ذ syntax آ ت غ ست صیش است: exten =>extension_name, priority, application ثا : exten => 123,1,Answer() ا Extensions یت ا ذ ػذد حشف... تاضذ. دس ادا ت ؼشفی شیه اص ای لس ت ا ی پشداصی : : extension_name ض اس ای است و ی ت ا ذ ػذد یا حش ف تاضذ و ؼ ال ت غ ست ػذد تیا ی ض د ا ذ ض اس ت ف. s : Extension ت ؼ ی start اص پشواستشدتشی ع ض اس ا )اص ع حش ف( ی تاضذ. ا ی و ض اس ای اص عشف ت اس یش ذ شفت ط د یا ت سظ استشیسه ض اسnumber extensionsدسیافت ط د لات استفاد ی تاضذ. ت ػ ا ثا :ص ا یى ت اس ت ivr اغ ی سیشد ی ی ض د. h :Extension ت ؼ ی hangup یثاضذ ای ض اس ا ی و ت اس یش ذ ت اس سا لغغ یى ذ فشاخ ا ی ی ض د.
t Extension :ت ؼ ی timeout یثاضذ. ا ی وcontext timeout یط د واستش ض اس ای اسد ى ذ ای ض اس فشاخ ا ی ی ض د. i Extension :ت ؼ ی invalid یثاضذ ص ا ی و واستش ض اس اضتثا اسد یى ذفشاخ ا ی ی شدد. Priority ت ؼ ای ا یت دس اخشای شاح یه context ی تاضذص ا یى وا تىس ا ت سظ استشیه فشاخ ا ی ی ض ذ ؼ ال ا ی خظ تش ا داسای 1: priority یثاضذ exten => 123,1,Answer() exten => 123,2,Hangup() next ت ؼ ای Priority n : ی تاضذ تشای اخشای خظ ت خظ تش ا ت غ ست incrementalاستفاد ی ض د. exten => 123,1,Answer() exten => 123,n,do something exten => 123,n,do something else exten => 123,n,do one last thing exten => 123,n,Hangup() ت ظ س ساد تش ضذ یه context ی ت ا ی اص دست س same استفاد ایی exten => 123,1,Answer() same =>n,do something same =>n,do something else same =>n,do one last thing Priority labels ی ت ا دس ش contextتشای شا یت یه lable تؼیی وشد دس غ ست ض دس حی تش ا یسی ادا وذ سا ت آ ا یت خاظ تا lable طخع اسخاع داد. ثا : exten => 123,n(label),application() ىت : تؼیی lable تشای یه priority ت غ ست صیش ادسست خ ا ذ ت د.
exten => 123,n,(label),application() Application طات ت ا صتا ای تش ا یسی دسdialplanاص function ا application ا استفاد یى ی. applications ا ای لات یت سا داسا ست ذ و شػ خاغی سا دس channelاخشا ای ذ. plan یىی اص ت ع س و ی ی ت ا حذ د 300 ا ی function application 400 دس استشیسه ؼشفی د دس تش ا یسی dial اص ا ا استفاد وشد. دس ادا تاروش ثا ت ؼشفی پشواستشدتشی ای ت اتغ ی پشداصی. Syntax: Answer ([delay]) Answer ا ی ت ظی اتی و تشای ش channel لات اػ ا ی تاضذ تاتغAnswer است. ی ت ا تشای ای تاتغ تشحسة ی ی ثا ی تاخیش دس ظش شفت ض د. Syntax: Playback(filename1[&filename2...][,options]) Playback ای تاتغ غشفا ا ىا پخص فای ای غ تی اص پیص ضثظ ضذ سا ت ا ی د ذ. ت ع س پیص فشؼ سیش فای ای غ تی دس سیش صیش ی تاضذ. /var/lib/asterisk/sounds/ Playback(filename) Playback(custom/filename) ىت : ا ش فای غ تی دس سیش خاغی تاضذ ی تایست تشای فشاخ ا ی آ فای ت غ ست صیش اص ای تاتغ استفاد وشد. Playback(/home/masoud/sounds/filename) دلت و یذ یاصی ت تؼیی پس ذ فای غ تی یثاضذ. استشیسىث غ ست ات اتیه ت تشی ویفیت سا تشای پخص فای غ تی ا تخاب ی ایذ. ی ت ا یذ دس حی پخص فای غ تی تا فطشد و یذ # فای غ تی سا ت ات ا سسا ذ خظ تؼذی تش ا سا اخشا د. Syntax: Hangup() Hangup ای تاتغ channel سا لغغ وشد یا ت اغغالح آ سا Hang ی up و ذ دسای حا ت ػذد 1- سا تش ی شدا ذ. اص ای تاتغ ؼ ال دس ا ت ای تش ا ا استفاد ی ض د.
ىت : تا ت خ ت حث تیت ا ستیىس واستشی آسا ای ش افضاس تسیاسی اص واستشا یض ای سخ ساا تخاب د تشای سفاسضی ساصی سیست ت ف ی خ دالذا ت تش ا یسی تش س ی استشیسه ی و ذ. الص ت روش است دس ا تش ا یسی ی تایست ىات صیش سا اس دس ظش داضت تاضیذ : - اس dialplan ادس سیش ای صیش ایداد ی ض ذ. etc/asterisk/extensions.conf ضا ت ظی ات اغ ی ا ی extensions_additional.conf: ضا Dialplan ا تغیش ای ایداد ضذ ت سظ freepbx الص است تذا ی تؼذ اص ش تغییش دس freepbx ای فای overwrite ی ض د. ت اتشای ش تغییش دستی دس ای فای غمی ی تاضذ. تشای آ ى تت ا یذ تغییشات دستی دس free pbx ایداد و یذ ی تایست تخطی سا و تغییش داد ایذ دس ای فای extension_freepbxoverride وپی اییذ. extensions_custom.conf ضا Dialplan ایداد ضذ ت سظ واستش تا روش ثا ساد ا ی dialplanخ د سا ت ع س ػ ی پیاد ساصی ی و ی. دس اتتذا Context خ د سا دس سیش etc/asterisk/extension_custom.conf ت غ ست صیش پیاد ساصی ی و ی. Include=>test - 1 [test] exten =>100,1,Answer() same =>n,playback(hello-world) سپس فای سا رخیش ی ایی لث اص تست dialplanسا تا استفاد اص وا ذ صیشreload یى ی. Asterisk -rx dialplan reload - 2-3 تشای تست ای dialض اس plan 100 سا ض اس یشی یى ی.() answer channelف ق app سا پاسخ فت فای غ تی hello-wordسا و دس سیش پیص فشؼ لشاس داسد playback یا پخص ی و ذ ایتاchannelلغغ ی شدد. Record(filename:format silence[ maxduration][ option]) Record
ای دست س ا ىا ضثظ فای غ تی سا ت واستش خ ا ذ داد. ا اخشای ای دست س تؼذ اص ض یذ غذای ت ق )پخص فای beep (ضثظ غذا ضش ع تا ص ا ی و واستش و یذ # سا تفطاسد ادا خ ا ذ یافت. تا ت خ ت syntax واستش دس ای دست س ا ىا ایداد حذ دیت دس ص ا ضثظ تؼیی فش ت فای غ تی ا فای ضثظ ضذ چ ی تؼیی ىا رخیش ساصی فای ضثظ ضذ سا خ ذ داضت. ت ثا صیش ت خ و یذ. exten => 6597,1,Answer(5) same =>n,record(en/custom-menu.gsm) same =>n,wait(1) same =>n,playback(custom-menu) دس ای ثا فای غ تی دس صیش ضاخ en تا ا custom-menu فش ت gsm رخیش یط د.تا فطاس داد و یذ # ىث ت ذت 1 ثا ی فای غ تی رخیش ضذ دذدا پخص ی ض د. Syntax: Goto([[context ]extension ]priority) Goto اص ای دست س تشای اضاس وشد یا پشش ت تخص ای خت ف یه تش ا استفاد ی ض د. ثا : exten => 201,1,Goto(TestMenu,start,1).. [TestMenu] exten => start,1,answer() Syntax: Background(filename1[&filename2...][ options[ langoverride][ context]]) Background اص ای تاتغ ت ظ س پخص فای غ تی تا ا ىا و تش آ استفاد ی ض د. طات app Playback ی تاضذ تا ای تفا ت و دس ا پخص فای غ تی واستش ا ىا فطشد و یذ یا اسد وشد DTMF سا داسد. ای تاتغ تسیاس پش واستشد ت د دس تیطتش اسد تشای ایداد IVR اص آ استفاد ی ض د. ثا : [TestMenu]
exten => start,1,answer() same =>n,background(main-menu) WaitExten() تا ای دست س ا ذ background واستش ا ىا اسد وشد dtmf سا داسد. اص ای دست س ؼ الت شاbackground تشایساختivrاستفاد یط د. دس الغ طخع و ذ ذت ص ا ی است و تؼذ اص [TestMenu] exten => start,1,answer() same =>n,background(main-menu) same =>n,waitexten(5) ات ا فای غ تی استشیسه تظش اسد وشد DTMF اصعشف واستش ی ض د. exten => 1,1,Playback(digits/1) exten => 2,1,Playback(digits/2) حا تا روش یه ثا ػ ی ا ی ivrخ د سا ی ساصی. دس :extension_custom.conf Include=> Testivr [Testivr] exten =>333,1,Answer() same =>n,background(main-menu) same =>n,waitexten(5) exten => 1,1,Playback(digits/1) same =>n,goto(testivr,333t,1) exten => 2,1,Playback(digits/2) same =>n,goto(testivr,333,1) exten => i,1,playback(pbx-invalid) same =>n,goto(testivr,start,1) exten => t,1,playback(vm-goodbye)
دس ثا ف ق تؼذ اص ض اس یشی ػذد 333 فای غ تی پخص ی شدد دس غ ستی و ػذد 1 یا 2 اسد ض د ػذد خ ا ذ ضذ تش ا تا استفاد اص دست س Go to دذدا اخشا خ ا ذ ضذ. دس غ ستی و واستش ػذدی اضتثا اسد و ذ ت اس ت number) i(invalid سیشد ی ی ض د پیغا خغا پخص ی شدد. ا ش واستشدس حی پخص فای یا تؼذ اص آ ت ذت 5 ثا ی ػذدی سا اسد ى ذ استشیسه ت ع س پیص فشؼ تؼذ اص 10 ثا ی ت اس سا ت سیشی و دس تش ا تشای t(timeout) تؼشیف ضذ است ی فشستذ. Read(variable[ filename][ maxdigits][ option][ attempts][ timeout]) Read Application ای applications تسیاس ضثی ت تاتغ Background ی تاضذ. تا استفاد اص ای applicationواستشلادس خ ا ذ ت د دس حی پخص فای غ تی dtmf اسد ایذ. ىت : ی ت ا تا پاسا تش ت ثا صیش ت خ و یذ. maxdigits واستش سا دس تؼذاد اسد وشد ض اس حذ د وشد. exten=>6123,1,read(digits,enter-ext-of-person) exten=>6123,n,playback(you-entered) exten=>6123,n,saynumber(${digits}) Dial Syntax: Dial(type/identifier, timeout, options, URL) Dial یىی اص تشی پشواستشدتشی application ا تشای ض اس یشی اتػا ت اس یش ذ ا ت یىذی ش ی تاضذ. ت د ی ا یت صیاد ای تاتغ ت ا ی Argument ای آ سا سد تشسسی لشاس ی د ی. Argument 1: Destination ای argument طخع و ذ ی مػذی است و لػذ ت اس تا آ سا داسی. ای مػذ ت د تخص تمسی ی شدد و تا ػال ت / اص خذا ی ض ذ. تخص ا آ ع وا ا ی است و ی خ ا ی تا آ ت اس ت یشی تخص د ض اس یا ض اس آ channel ی تاضذ. Destination:type/identifier >>>>>>---------------------<<<<<ض اس یا ض اس / ع وا ا : مػذ ىت : ع وا ا ی ت ا ذ...,IAX,...DAHDI,SIP تاضذ. ض اس یا ض اس ی ت ا ذ ض اس وا ا یا ض اس داخ ی ض اس ض شی یا...تاضذ. - -
ثا : دس ثا ف ق عشیم ض اس یشی استثاط تا داخ ی ای تفا ت ظیش : [custom-dial] exten=>502,1,dial(sip/502) exten=>503,1,dial(iax/503) exten=>504,1,dial(dahdi/1) exten=>505,1,dial(dahdi/g0/88209229) Sip, IAX یا داخ ی اص ع FXS طا داد ضذ است. ػال تش آ دس اخشی ثا چ ی استثاط تا ض اس خغ ط ض شی اص عشیك تشا ه FXO یا E1 اسائ شدیذ است. الص تزوشست تا استفاد اص ػال ت & ی ت ا یذ ض ا تا ماغذ خت ف ت اس حاغ و یذ. exten => 100,1,Dial(DAHDI/1&SIP/0004F2001122&IAX2/Softphone) تا ض اس یشی 100 ت ا ی Destination ت ع س ض ا تا استشاتژیringall ضش ع ت ص خ سد یى ذ. دس ای حا ت ت اس س دی تا ا ی مػذی channel سا داخ ی ا ت لف ی شدد. answerوشد است bridge یط د ف سا ص خ سد تمی Argument 2: Timeout ف ای argument ذت ص ا ا تظاس تشای ص خ سد ی تاضذ. ثا : exten => 201,1,Dial(DAHDI/1,10) same => n,playback(vm-nobodyavail) same => n,hangup() دس ثا ف ق ت اس یش ذ سؼی داسد تا شفت ض اس 201 تا داخ ی آ ا يFXSدس وا ا 1 ت اس تشلشاس و ذ. ا ش لث اص 10 ثا ی ت اس answer ض د وا ا bridgeخ ا ذ ضذ استثاط تا داخ ی سد ظش تشلشاس ی ض د.دس غیش ای غ ست تؼذ اص 10 ثا ی پیغا playback پخص ی شدد وا ا لغغ ی ض د. ا ش تغیش timeout ت ظی ط د تا ص ا ringing وشد وا ا ػ یات hangup یا answerوشد ادا خ ا ذ یافت. ا ی و داخ ی ای مػذ) )destination پاسخ ثاض ذ یا ضؼیت آ ا یىی اص حا ت ای no answer, busy unavailable...تاضذ استشیسه تغیشDIALSTATUS سا فشاخ ی یى ذ تش ا تا حفظ ا یت ( priority (ادا ی یاتذ. دس آی ذ تا تغیش DIALSTATUS تیطتش آض ا خ ا یذ ضذ. Argument 3: Option
ای تغیش اص ع string است و داسای پاسا تش ای صیادی ی تاضذ. دس ادا ت اختػاس ت ؼشفی د سد اص پشواستشدتشی ای پاسا تش ا ی پشداصی. m :تا استفاد اص ای پاسا تش ت اس یش ذ اص اتتذای ض اس یشی ت دای ض یذ غذای ت ق music on hold سا ی ض د. exten => 201,1,Dial(DAHDI/1,10,m) same => n,playback(vm-nobodyavail) same => n,hangup() :L(x[:y][:z]) تشای حذ د وشد ذت ص ا ىا ت اس یش ذ اص ای پاسا تش استفاد ی ض د. X ذت ص ا داص تشای ىا است تؼذ اص زضت ای ذت ص ا ت اس لغغ ی شدد. احذ آ تشحسة ی ی ثا ی ی تاضذ. Y ذت ص ا تالی ا ذ ت پایا ىا است و ت ظ س اػال طذاس لغغ اص آ استفاد ی شدد. احذ آ یض تشحسة ی ی ثا ی ی تاضذ. Z پیغا طذاس لغغ ش Z ی ی ثا ی لث اص لغغ اس تىشاس ی ض د. exten => 100,1,Answer exten => 100,n,Dial(sip/201,30,L(30000[:10000][:4000])) exten => 100,n,Hangup Argument 4: URI ای آس ا ت ذست سد استفاد لشاس ی یشد.دس غ ستی و endpoint ا لات یت دسیافت urlسا ا استفاد اص soft phone دسغفح وا پی تشpopup خ ا ذ ضذ. url. supportو ذ ثا : [TestMenu] exten => start,1,answer() same =>n,background(main-menu) same =>n,waitexten(5) exten => 1,1,Dial(SIP/222,10) ; same =>n,playback(vm-nobodyavail)
exten => 2,1,Dial(SIP/333,10) ; same =>n,playback(vm-nobodyavail) exten => i,1,playback(pbx-invalid) same =>n,goto(testmenu,start,1) exten => t,1,playback(vm-goodbye) ىت : فمظ استفاد اص ا ی تغیش سد یاص است دس غ ست استفاد ىشد اص آس ا ا خای آ سا خا ی ت زاسیذ. exten => 1,1,Dial(DAHDI/1,,m) متغیرها) Variables ( - ا ذ ش صتا تش ا یسی دس dialplan اص تغیش ا تشای ت ث د تخطیذ تش ا استفاد یى ی. - تغیش ا داسای ا حػش ت فشد ی تاض ذ و اعالػات سا دس خ د رخیش یى ذ. Syntaxآ ا ت غ ست س ت س ی تاضذ. ${Name} - تغیش ا دس dialplanتا حش ف و چه تضسي ضت ی ض ذ. - ت ع س و ی ت چ ذ ش تمسی ی ض ذ: 1 -متغیرهای اصلی) Global ( ای ع تغیش ا دس فای extensions.conf یا globals_custom.conf ت غ ستىا تىس[ global ]تؼشیف ی ض ذ. تغیش ای اغ ی دس dialplan دس ش تخطی اص تش ا ی ت ا ذ فشاخ ا ی ض ذ. [globals] gexten=sip/222-2 متغیرهای کانال )Channel(
ای ش تغیش ایی ست ذ و غشفا شت ط ت یه ت اس خاظ ی تاض ذ فمظ تا ص ا ی و آ ت اس تشلشاس یثاضذ ی exten => 301,1,Set(masoud=SIP/100) same =>n,dial(${masoud}) ت ا اص آ ا استفاد آ ا سا فشاخ ی د. ا ذ...CALLERID تا ؼىس تغیش ای اغ ی سا ی ت ا دس ش ىا ی فشاخ ا ی وشد. ای ع تغیش ا تا استفاد اص وا ذ Set() اعالػات وا ا خاسی سا دس خ د رخیش ی و ذ. تؼذاد صیادی اص تغیش ای channel ت غ ستاص پیص تؼشیف ضذ خ د ی تاض ذ. استشیسه ی ت ا ذتؼضی اص تغیش ای اص پیص تؼشیف ضذ سا دس dialplan فشاخ ی ایذ. ت ای ع تغیش ا و ت غ ست حػش ت فشد فمظ تا استفاد اصحش ف تضسي سص س ضذ ا ذ تغیش ایسیست ی یض فت یط د.)دس ادا ت چ ذ اص ای تغیش ا اضاس ضذ است. ) $ } CALLERID(all)}, ${CALLERID(name)}, ${CALLERID(num)}, ${CHANNEL}, ${CONTEXT}, ${EPOCH}, ${EXTEN}, ${SIPUSERAGENT}, and ${UNIQUEID{ ${CDR(accountcode)} * - Account code (if specified) دس صیش یستی وا اص تغیش ای سیست ی ایص داد ضذ است: ${BLINDTRANSFER} - The name of the channel on the other side of a blind transfer ${BRIDGEPEER} - Bridged peer ${BRIDGEPVTCALLID} - Bridged peer PVT call ID (SIP Call ID if a SIP call) ${CALLERID(ani)} * - Caller ANI (PRI channels) OLI ${CALLERID(ani2)} * - ANI2 (Info digits) also called Originating line information or ${CALLERID(all)} * - Caller ID ${CALLERID(dnid)} * - Dialed Number Identifier ${CALLERID(name)} * - Caller ID Name only ${CALLERID(num)} * - Caller ID Number only ${CALLERID(rdnis)} * - Redirected Dial Number ID Service ${CALLINGANI2} * - Caller ANI2 (PRI channels) ${CALLINGPRES} * - Caller ID presentation for incoming calls (PRI channels)
${CALLINGTNS} * - Transit Network Selector (PRI channels) ${CALLINGTON} * - Caller Type of Number (PRI channels) ${CHANNEL} * - Current channel name ${CONTEXT} * - Current context ${DATETIME} * - Current date time in the format: DDMMYYYY-HH:MM:SS (Deprecated; use ${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}) ${DB_RESULT} - Result value of DB_EXISTS() dial plan function ${EPOCH} * - Current unix style epoch ${EXTEN} * - Current extension ${ENV(VAR)} - Environmental variable VAR ${GOTO_ON_BLINDXFR} - Transfer to the specified context/extension/priority after a blind transfer (use ^ characters in place of to separate context/extension/priority when setting this variable from the dialplan) ${HANGUPCAUSE} * - Asterisk cause of hangup (inbound/outbound) ${HINT} * - Channel hints for this extension ${HINTNAME} * - Suggested Caller*ID name for this extension ${INVALID_EXTEN} - The invalid called extension (used in the "i" extension) ${LANGUAGE} * - Current language (Deprecated; use ${LANGUAGE()}) ${LEN(VAR)} - String length of VAR (integer) ${PRIORITY} * - Current priority in the dialplan ${PRIREDIRECTREASON} - Reason for redirect on PRI, if a call was directed ${TIMESTAMP} * - Current date time in the format: YYYYMMDD-HHMMSS (Deprecated; use ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}) ${TRANSFER_CONTEXT} - Context for transferred calls ${FORWARD_CONTEXT} - Context for forwarded calls ${DYNAMIC_PEERNAME} - The name of the channel on the other side when a dynamic feature is used. ${DYNAMIC_FEATURENAME} The name of the last triggered dynamic feature. ${UNIQUEID} * - Current call unique identifier
${SYSTEMNAME} * - value of the systemname option of asterisk.conf ${ENTITYID} * - Global Entity ID set automatically, or from asterisk.conf تا روش ثا واستشد استفاد اص تغیش اسا دس dial طا ذ plan خ ا ی وشد: تشای تؼشیف تغیش ای اغ ی ا ع س و فت ضذ دس فای extensions.confت غ ست صیش تؼشیف ی و ی : [globals] masoud=sip/100 ali=sip/200 reza=dahdi/1 چ ی ی ت ا دس ع تش ا تشای تؼشیف تغیش ای اغ ی اصدست سSetGlobalVar استفاد وشد. [internal] exten => 123,1,SetGlobalVar(masoud=SIP/100) [lab] exten => 4000,1,Answer exten => 4000,n,Wait(1) exten => 4000,n,Set(TIMEOUT(digit)=3) exten => 4000,n,Set(TIMEOUT(response)=10) exten => 4000,n,Background(custom/mainivr) exten => 4000,n,WaitExten(,) exten => 1,1,Goto(ext-603,s,1) exten => 2,1,Goto(day-audio,s,1) exten => 3,1,Goto(ext-doble,s,1) exten => i,1,playback(invalid) exten =>i,n,hangup() exten => t,1,hangup() exten => hang,1,playback(vm-goodbye) exten =>hang,n,hangup [ext-603] exten => s,1,dial(${masoud},,r) exten =>s,n,hangup() [day-audio] exten => s,1,playback(custom/day) exten =>s,n,hangup()
[ext-doble] exten => s,1,dial(${ali}&${reza},10) exten =>s,n,hangup() SayDigits() تا استفاد از ای applicationا ىا خ ا ذ ضذ یه ػذد طخع تشای ت اس یش ذ ت غ ست سل ت سل فشا ی ض د. ت ػ ا ثا دسغ ست استفاد اصای تاتغ ت غ ست saydigits(123) استشیسه مذاسصیش سا تشای خاعة ی خ ا ذ: One, Two, Three SayNumber() ا ىا خ ا ذ اػذاد تشای ت اس یش ذ تا استفاد اصای application ای ا ىا فشا ی ض د و اػذاد طخػی تشای ت اس یش ذ خ ا ذ ض د. ت ػ ا ثا تؼذ اصاستفاد اصای application ت ای غ ست: saynumber(123) استشیسه مذاس صیش سا تشای خاعة ی خ ا ذ: "one hundred twenty three". SayAlpha() ای applicationا ىا خ ا ذ یه سضت اص حش فشا تشایت اس یش ذ فشا ی و ذ. ت ػ ا ثا : SayAlpha(hello) ص ا ی و تش ا ت خظ ف ق ی سسذ استشیسه و "hello" سا تشای ت اس یش ذ پخص ی و ذ. ( SayPhonetic:) ای application تیا و ذ و ت غ ست خفف ی تاضذ. ثا : SayPhonetic(hello) و "Hotel Echo Lima Lima Oscar خ ا ذ یط د. الگوهای شماره گیری )تا ت خ ت حائضا یت ت د ا ای ض اس یشی حت ا تا ایpattern ای ض اس یشی دس استشیسه آض ایی داسی. دس ادا ت یادآ سی تؼذادی اص تشی آ ا ی پشداصی.( X: ش ػذدی تی 0 تا 9 سا ضا ی ض د. : Z ش ػذدی تی 1 تا 9 سا دس ضا ی ض د.
: N ش ػذدی تی 2 تا 9 یثاضذ. دس dialplan یسی تشای matchوشد ا ا اص.(_) underscoreاستفاد ی ض د. ت ع س ثا : _NXX _ X. _. ىت : الص تزوشست و ا ش) _ ) سا دس اتتذای ای pattern فشا ش و ی استشیسه آ سا ت ػ ا یه extension name دسیافت ی و ذ.ای سد یىی اص اضتثا ات سایح دس اتتذای واس تا dialplan یسی ی تاضذ. ثا : exten => _NXX,1,Playback(auth-thankyou) دس غ ستی و واستش ػذدی 3 سل ی و سل ا آ اص 2 تا 9 د سل تؼذی آ اص 0 تا 9 تاضذ سا ض اس یشی و ذ پیغا auth-thankyou پخص خ ا ذ ضذ. دس الغ ای ػذد ی ت ا ذ ػذدی تی 200 تا 999 تاضذ. -ا ش استشیسه د ا ی طات سا تشای matchوشد پیذا و ذ ت اس سا ت ا ی ضثی تش دلیك تش سیشد ی ی ایذ. دس ثا صیش ا ش واستش ض اس 5551212 سا dial و ذ دست س د اخشا خ ا ذ ضذ. exten => _555XXXX,1,Playback(silence/1&digits/1) exten => _55512XX,1,Playback(silence/1&digits/2) متغیرهای کانال variable( )channel تغیش { EXTEN }$اص خ تغیش ای پش واستشد وا ا ی تاضذ. دس حمیمت ت ض اس شفت ضذ یا extensions فت ی ض د. ت ثا صیش ت خ و یذ: تؼذ اص شفت ش ض اس 3 سل ی تاتغ SayDigitsآ سا ت غ ست digitتشای واستش ی خ ا ذ. exten => _XXX,1,Answer() same =>n,saydigits(${exten}) :${EXTEN:x} اص ای syntax ا ی و تخ ا ی ػذدی سا خذا و ی استفاد ی ض د. exten => _XXX,1,Answer()
same =>n,saydigits(${exten:1}) دس ای ثا سل ا حزف 2 سل آخش ت غ ستشل سل یا دس اغغالح digitتیا ی ض د. دس ثا تاال 2 سل ا حزف فمظ سل آخش ت غ ست digti ی ض د. exten => _XXX,1,SayDigits(${EXTEN:-1)) :${EXTEN:x:y} دس ای X syntax تؼذاد اسلا ی است و ی خ ا ی اص ػذد خذا ض د y تؼذاد اسلا ا تخاب ضذ ی تاضذ. ت ع س ثا دس ػذد 94169671111 ${EXTEN:1:3} خش خی 416 ی تاضذ. ثا : پرش شرطی ) GotoIf( [outbound-local] exten => _9NXXXXXX,1,Dial(DAHDI/g0/${EXTEN:1}) exten => _9NXXXXXX,2,Congestion( ) GotoIf(expression?destination1:destination2) اصای تاتغ تشای پشش تی خظ ای خت ف تش ا تا دس ظش شفت ضشط خاظ استفاد ی ض د. س ذ واس ت ای غ ست است و چ ا چ ضشط یا ا expression سیش د ی ی ض د. دسست تاضذ ت اس ت destination1 دسغیشای غ ست ت اس تdestination2 مػذ یا destinations ی ت ا ذ یىی اص اسد صیش تاضذ: test ا ذ :Priority Label- : ا ذtest,456 -Priority Label, extension ا ذ incoming,test,456 :-context, extension, and priority label ثا : exten => 345,1,Set(TEST=1) same =>n,gotoif($[${test} = 1]?true:false) same =>n(true),playback(hello-word) same =>n(false),playback(goodbye)
exten => 345,1,Set(TEST=1) same =>n,gotoif($[${test} = 1]?:false) same =>n,playback(hello-word) same =>n(false),playback(goodbye) exten => 123,1,Set(COUNT=10) same => n(start),gotoif($[${count} > 0]?:goodbye) same =>n,saynumber(${count}) same =>n,set(count=$[${count} - 1]) same =>n,goto(start) same => n(goodbye),hangup() exten => 123,1,GotoIf($[${CALLERID(num)} = 8885551212]?reject:allow) same => n(allow),dial(dahdi/4) same => n(reject),playback(abandon-all-hope) exten => 123,1,GotoIf($[${CALLERID(num)} = 8885551212]?reject:allow) same => n(allow),dial(dahdi/4) same => n(reject),playback(abandon-all-hope) GotoIfTime تشی واستشد ای application ای است و تا استفاد اص آ ی ت ا پیا ای خ ش آ ذ یی تفا تی سا دس تاص ای ص ا ی خت ف تشای ت اس یش ذ ا پخص د. Syntaxای applicationت غ ست س تش ی تاضذ. GotoIfTime(times,days_of_week,days_of_month,months?label) ت ع س و ی دس غ ستی و ص ا تاسیخ فؼ ی تا تاص ص ا ی طخع ضذ دس ای application غاتمت داضت تاضذ سیست ت اس سا ت س ت یه یث ؼی سیشد ی ی ایذ. زمان) time ( دس ادا چ ی ت ظی یه تاص ص ا ی دس یه ضثا س ص سا تشای ایapplication ثا ی ص ی :
ا ش تاص ص ا ی سد ظش ا تی 9 غثح تا 5 تؼذاصظ ش تاضذ ی تایست ت غ ست صیش ضت ض د: GotoifTime(09:00-17:00,...) ىت : یه ضثا س ص اص حذ د ص ا ی 0:00 ضش ع ت 23:59 خت ی ض د. روزهای هفته) week )day of دس ادا ت ظ سآ صش تؼیی یه تاص طخع تشای س ص ای فت چ ذ ثا آ سد ضذ است. س ص ای فت تایذ ت غ ست mon, tue, wed, thu, fri, sat, sun ضت ض ذ. ت ػ ا ثا ا ش ی خ ا ی حذ د ای تی س ص د ض ث تا خ ؼ سا طخع ایی تایذ ت غ ست صیش تیا ض د: GotoifTime(...,mon-fri,...) روزهای ماه) days-of-month ) دس غ ستی و لػذ داسیذ حذ د ای اص س ص ای خاظ دس ش ا سا تؼیی اییذ ی تایست اص ض اس آ س ص ا استفاد اییذ. ت ػ ا ثا ا ش ی خ ا یذ ای حذ د ت ا س ص ای ا سا ضا ض د تایذ ت یسسیذ 1-31 ا ش ی خ ا یذ ای تاص س ص پا ضد سی ا یه ا سا ضا ض د تایذ ت یسیذ 30&15. ماه ها (Months( دس ای لس ت تایذ ا ا ای سد ظش ت غ ست صیش ضت ض د: ثا : دس ساػات واسی ت اس ت contextای ت ا open فشستاد ی ض د. jan, feb, mar, apr, and so on. exten => s,1,gotoiftime(*,*,4,jul?closed,s,1) same =>n,gotoiftime(09:00-17:59,mon-fri,*,*?open,s,1) same =>n,gotoiftime(09:00-11:59,sat,*,*?open,s,1) دس ساػات غیشواسی و د ػ تؼغی ی تاضذ ت اس ت contextای ت ا closed فشستاد ی ض د. Voicemail )صندوق صوتی( same =>n,goto(closed,s,1) یىی اص خزاب تشی یژ ی ای سیست ت ف ی تحت استشیسه غ ذ ق غ تی یا ا Voice یثاضذو ذسادا mail ت ثشخی اص features ای آ اضاس طذ است. - ا ىا تؼشیف غ ذ ق غ تی ت تؼذاد ا حذ د تشای واتشا - لات یت voice2mail اسسا voicemail ت غ ست پی ست ت آدسس ای ی. - تؼشیف voicemail() تشای حا ت ای خت ف واتش: voicemail busy, voicemail unavailable
ت ظی ات voicemailدس سیش etc/asterisk/voicemail.conf ی تاضذ و داسای تغیش ای خت فی ی تاضذ و دس آی ذ ت ع س و ی تشسسی ی ض ذ. دس ای تخص ت context voicemail و دس dialplan یسی اص آ استفاد ی ض د اضاس ی و ی. ت سی context voicemail ای ا ىا تشای ا فشا ی ض د و ت ظی ات خت فی تش س ی mailbox ایی و اص یىذی ش ستم ست ذ ا دا د ی. ساخت Mailboxes اص Syntax صیش تشای تؼشیف mailboxes استفاد ی ض د. : mailbox=>password,name[,email[,pager_email[,options]]] Mailbox ا ض اس mailbox است. ای ض اس ؼ ال ا ض اس داخ ی یا extension number ی تاضذ. Password پس سد سد یاص تشای دستشسی ت غ ذ ق غ تی ی تاضذ.فای voicemail.conf ت اصای تغییش پس سد ت سظ واستش ت س ص ی ض د. Email آدسس ای ی تشای دسیافت Voicemail ی تاضذ. pager_email استشیسه ی ت ا ذ پیغا ی ث ی تش آ ا ساصی واستش اص دسیافت voicemail ت آدسس ای ی ی خاظ اسسا ایذ. Options یه سشی ت ظی ات اضافی تشای attach,serveremail, tz, saycid, review, operator, callback, time zone, dialout ی and exitcontext تاضذ و دس فای voicemail.conf خ د است. [default] 101 => 1234,JohnDoe,john@asteriskdocs.org,jdoe@pagergateway.tld 102 => 4444,JaneDoe,jane@asteriskdocs.org,jane@pagergateway.tld ثا : Voicemail -Dialplan حا تی سا دس ظش ت یشیذ و تخ ا ی ا ش داخ ی john,jane پاسخ ی ت اس ث د ذ ت اس ت voicemail سیشد ی ض د. دس ای حا ت اص دست س voicemail(mailbox@context) استفاد یى ی : [internal]
exten => 101,1,Dial(${ali},,r) exten => 101,102,VoiceMail(b101@default) پیغا " داخ ی سد ظش اضغا یثاضذ." سا تشای ت اس یش ذ پخص ی ایذ.) busy ( voicemail اص bلث b :حشف "داخ ی سد ظش دسدستشس یثاضذ."ساپخص ی ایذ.( unavailable ) اصvoicemailپیغا :حشفuلث u دس ثا صیش دس غ ستی و واستش پس اص 10 ثا ی خ اب ذ ذ دست س voicemail اخشا ی ض د. [internal] exten => 101,1,Dial(${ali},10,r) دسترسی به Voicemail تشای دستشسی ت پیغا ای غ ذ ق غ تی اص دست س exten => 101,2,VoiceMail(u101@default) VoiceMailMain( ) دس dialplan استفاد ی ایی. ىت خا ة ت خ ای است و ای دست سآس ا ذاسد. تا استفاد اص دست س صیش دس ثا تاال ت غ ذ ق غ تی واستشا دستشسی خ ا ی داضت. exten => 500,1,VoiceMailMain( ) Macros دساستشیسه تشای خ یشی اص تىشاسdialplan ا اص اوش ا استفاد ی ض د. ثا ی و دس لس تVoicemailروش ضذ سا دذدا یادآ سی ی و ی. exten => 101,1,Dial(${JOHN},10) same =>n,gotoif($["${dialstatus}" = "BUSY"]?busy:unavail) same => n(unavail),voicemail(101@default,u) same => n(busy),voicemail(101@default,b) حا ص ا ی سا دس ظش ی یشی و ی خ ا ی تشای 100 واستشvoicemailتساصی. دس ای حا ت تایذ تاس ا ای dialplanسا وپی و ی. ای واس غمی ت ظش ی آیذ صیشا ػال تشای و حد تش ا صیاد ی ض د ت اصای شتغییشدستش ا احت ا خغا یض افضایص ی یاتذ. و ی. دسای الغ اوش ا ت ا و ه یى ذ. تذی غ ست و تؼذ اص تؼشیف یه اوش ت ا ی داخ ی ا سا ت آ سیشد ی ی تشای فشاخ ا ی اوش ا دس dialplan اص دست س() Macroاستفاد ی ایی. Macro ا داسای تغیش ای یژ ی تاضذ. ا تا استفاد اص macro- دس اتتذای اوش آ سا اص context ای ؼ ی ت ایض ی ایی. دس اوش ا ی تایستاصextension ایsاستفاد د.
${MACRO_CONTEXT} دس حمیمت وا تىسی است و اوش دس آ فشاخ ا ی ضذ است. ${MACRO_EXTEN} Extensionایاست و اوش دس آ فشاخ ا ی ضذ است. ${MACRO_PRIORITY} ای ضی ا ا یت ای است و اوش دس آ فشاخ ا ی ضذ است. ${ARG n } ای سد آس ا ی است و ت اوش پاس داد ی ض د. ت ػ ا ثا : ا ی آس ا $}ARG1{ تؼذ د ی ${ARG2} ثا صیش تؼشیف اغ ی اص اوش voicemail یثاضذ. حاال ا ی ت ا ی اوش ساخت ضذ سا دس dialplan فشاخ ا ی و ی. ثا : [macro-voicemail] exten => s,1,dial(${arg1},10) same =>n,gotoif($["${dialstatus}" = "BUSY"]?busy:unavail) same => n(unavail),voicemail(${macro_exten}@default,u) same => n(busy),voicemail(${macro_exten}@default,b) exten => 101,1,Macro(voicemail,${JOHN}) exten => 102,1,Macro(voicemail,${JANE}) exten => 103,1,Macro(voicemail,${JACK}) [macro-voicemail] exten => s,1,dial(${arg1},20) same =>n,goto(s-${dialstatus},1) exten => s-noanswer,1,voicemail(${macro_exten},u)
same =>n,goto(incoming,s,1) exten => s-busy,1,voicemail(${macro_exten},b) same =>n,goto(incoming,s,1) exten => _s-.,1,goto(s-noanswer,1) GoSub() ای application تسیاس ضثی Macro ی تاضذ ای ا ىا سافشا ی و ذ و ت اس سات یه block اص ت اتغ dialplan ا تما د ی ب استفاد اص یه تغیش طخع خظ تش ا سا ت مغ ضش ع تاص شدا ذ. دس حمیمت GOsub() ا ذ GOto() ػ ی و ذ تا دس یاد داضت ای ىت و ت اس اص ودا آ ذ است. Local Channels تاضذ. یىی اص س ش ای ض اس یشی دس دست س Dial() استفاد اص local ی channels تاضذ و داسای یژ ی ای خزاتی ی دس ادا تا روش ثا ت ت ضیح ای دست س پش واستشد ی پشداصی. [LocalSets] exten => 107,1,Verbose(2,Dialing multiple locations simultaneously) same => n,dial(sip/0000ffff0001&dahdi/g0/14165551212&sip/myitsp/12565551212,30) دس ای ثا ت ا ی ماغذ ت ع س ض ا ت ذت 30 ثا ی ص یخ س ذ ت اس س دی ت ا ی مػذی و سشیؼتش channelسا answerوشد است سیش د ی ی ض د تالفاغ ص خ سد تمی داخ ی ا ت لف ی شدد. حا ا ی خ ا ی تی ض اس یشی ا تاخیشایداد و ی پس اص زضت ذت ص ا طخع ص خ سد ش داخ ی سا ت لف ایی. تذی ظ س اص Local Channel استفاد ی و ی. Local Channels ا ىا و تش ش وا ا سا ت ا خ ا ذ داد. ت ثا صیش ت خ و یذ [LocalSets] exten => 107,1,Verbose(2,Dialing multiple locations with time delay) same =>n,dial(local/channel_1@timedelay&local/channel_2@timedelay &Local/channel_3@TimeDelay,40)
[TimeDelay] exten => channel_1,1,verbose(2,dialing the first channel) same =>n,dial(sip/0000ffff0001,20) exten => channel_2,1,verbose(2,dialing the second channel with a delay) same =>n,wait(10) same =>n,dial(dahdi/g0/14165551212) exten => channel_3,1,verbose(2,dialing the third channel with a delay) same =>n,wait(15) same =>n,dial(sip/myitsp/12565551212,15) same =>n,hangup )( دس ای ثا channel_3, channel_1 ماغذی channel_2, and ست ذ و اص عشیك وا تىس time delay ض اس یشی ی ض ذ. تا اخشای ای وا تىس س channels تا فاغ ص ا ی طخع اص ض اس یشی ی ض ذ. ذت ص ا timeout تشای و channel ا 40 ثا ی یثاضذ..س ذ واس تذی غ ست است وchannel_1 پس اص زضت 20 ثا ی ص خ سد out time ی ض د. دس ی حی دس ثا ی 10 ض اس یشی channel_2 آغاص ی ض د تا پایا 40 ثا ی شت ط ت timeout ادا خ ا ذ یافت. چ ی پس اص 15 ثا ی اصت اس ا channel_3 ضش ع ت ض اس یشی ی ایذ ت ذت 25 ثا ی ادا خ ا ذ یافت. The Verbose and NoOp Applications
ت ظ س ایص اعالػات ت غ ست حظ ای دس حیظ وا ذی استشیسه ی ت ا اص ای د applications پشواستشد استفاد د.ای دapplication ؼ ال تشای debug وشد dialplan ا سد استفاد لشاس ی یشد. () Verbose داسای د پاسا تشاست. ا ی پاسا تشآ ت غ ست ػذدی یثاضذ شچ ای ػذد تیطتش تاضذ خضییات تیطتشی ایص داد ی ض د. د ی پاسا تش و ت غ ست text استاعالػات شت ط ت تغیش ای وا ا خاسی سا طا ی د ذ. NoOp یض ت ف No Operation یثاضذ. اغ ة ت ظ سdebugوشد اص آ استفاد ی ض د. ىت ای داست و واستشد exten=>6123,1,verbose(2,the channel name is ${CHANNEL}) exten=>6123,n,verbose(2,the unique id is ${UNIQUEID}) verbose تیطتش است. ثا : Looping in the Dialplan ح م ا) LOOP (دس dial plan یسی تشای خ یشی اصتىشاسخغ ط تش ا سد استفاد لشاس ی یش ذ. [IteratingLoop] exten => start,1,verbose(2,looping through an action five times.) same =>n,set(x=1) same =>n,verbose(2,starting the loop) same =>n,while($[${x} <= 5]) same =>n,verbose(2,current value of X is: ${X}) same =>n,set(x=${inc(x)}) same =>n,endwhile() same =>n,verbose(2,end of the loop) دس ادا یه ivrآ سد ضذ است و ثا ی وا واتشدی اص چ ی واستشد دست سLoop دس آ آ سد ضذ است: [AutomaticAttendantDemo] exten => _X.,1,Answer ; Answer inbound calls with 2 or ; more digits extensions exten => _X.,n,Wait(2) ; Perform a simple 2 seconds delay exten => _X.,n,Playback(welcome) exten => _X.,n,Set(Loop=0) exten => _X.,n,While($[${Loop} < 3]) exten => _X.,n,Background(menu) exten => _X.,n,WaitExten(5) ; Wait 5 seconds for user to enter input exten => _X.,n,Set(Loop=$[${Loop}+1]) exten => _X.,n(LoopEnd),EndWhile()
exten => _X.,n,Hangup() ; No input from user, so hangup exten => 1,1,Playback(msg1) exten => 1,n,Dial(SIP/300,60,rg) exten => 1,n,Hangup() exten => 2,1,Playback(msg2) exten => 2,n,Dial(SIP/301,60,rg) exten => 2,n,Hangup() exten => 3,1,Playback(msg3) exten => 3,n,Dial(SIP/302,60,rg) exten => 3,n,Hangup() exten => 9,n,Hangup() exten => i,1,set(loop=$[${loop}+1]) exten =>i,n,goto(loopend) exten => t,1,set(loop=$[${loop}+1]) exten =>t,n,goto(loopend) Authenticating Callers احشاص یت ت اس یش ذ ا ی ت ا ذ ت ػ ا یىی اص یژ ی ای یه سیست ت ف ی حس ب ض د. Syntax ای application ت غ ست صیش ی تاضذ: Authenticate(password[ options]) ىت : اص یه ت ساد ت ػ ا پس سد استفاد اییذ. Authenticate(/passwordfile [ options]) استفاد اص واساوتش "/"تذی ؼ است و تش ا ی ت ا ذ آس ا ی سا ت ػ ا ا یه فای تپزیشد و ضا یستی اص پس سد ا تاضذ. Authenticate(/dbfamily/key d) ; ای پس سد ا ی ت ا ذدس database رخیش ی شدد. [Authentication] exten => start,1,verbose(2,simple Authenicate application example) same =>n,playback(silence/1) same =>n,authenticate(1234) دس ای دا سخ ای اغالح ضذ خ د ی تاضذ و مذاس maxdigits آ 4 است. دس تید ص ا ی و پس سد سا اسد ی اییذ
یاصی ت فطشد # ی تاضذ. [Authentication] exten => start,1,verbose(2,simple Authenicate application example) same =>n,playback(silence/1) same =>n,authenticate(1234,,4) ا ش فی ذ پس سد تا ػال ت (/ ( ضش ع ضذ تاضذ ا ی ت ا ی اص یه فای خاسخی ت ػ ا ثؼی اص پس سد ا استفاد ایی. [Authentication] exten => start,1,verbose(2,simple Authenicate application example) same =>n,playback(silence/1) same =>n,authenticate(/etc/asterisk/authenticate/passwd_list.txt) [Authentication] exten => start,1,verbose(2,simple Authenicate application example) same =>n,playback(silence/1) same =>n,authenticate(/authenticate/password,d) ا ی ت ا ی پس سد ایی سا و دس دیتاتیس استشیسه سد استفاد لشاس ی یش ذ اغالح دس دیتاتیس اسد ایی. Creating Call Limits Using Groups Originating a Call ت ػ ا یه admin ضایذ تشای ض ا ای س ا پیص آ ذ تاضذ و آیا ی ت ا تذ استفاد اص Softphone,ipphone,. ت اس تشلشاس وشد. ت ض ا ت عشق خت ف ی ت ا یذ ای واس سا ا دا د یذ. دس ادا ت اسائ چ ذ سا ح یپشداصی. تا استفاد اص chan_oss.so module دست سات صیش سا دس putty اخشا و یذ. [root@elastixopt]# asterisk -r elastix*cli> module load chan_oss.so == Parsing '/etc/asterisk/oss.conf': Found == Registered channel type 'Console' (OSS Console Channel Driver) Loaded chan_oss.so => (OSS Console Channel Driver) elastix*cli> console dial 100 elastix*cli> console transfer 103@from-internal
داخ ی 100 ض اس یشی ی ض د ت داخ ی 103 تػ ی ض د CLI استریسک تا استفاد اص channel originate و محیط *CLI>channel originate SIP/myphoneapplication Playback demo-congrats *CLI>channel originate SIP/myphoneextension 1234@DialplanContext Dial plan و محیط Originating a Call عشصاستفاد اصدست سorginateسادسdialplanتشسسی یى ی. ت د س ش ی ت ا اص ای دست س استفاد وشد. ت اس تی یه channel یه application خاظ originate ض د. originate<tech/data> application <appname> [appdata] )1 ثا ( exten => s,1,originate(sip/100,app,playback,welcome) دس ای ثا تؼذ اص تشلشای ت اس تا داخ ی 100 پیغا welcome تشای داخ ی playback یط د. 2( ت اس تی یه channel یه extension خاظ originate ض د. originate<tech/data> extension [<exten>@][<context>] ثا ( exten => s,1,originate(sip/100,exten,default,s,1) داخ ی 100 تcontrext,extension=s [default ] تا priority=1 سیشد ی ی ض د. [globals] PHONES_TO_PAGE=SIP/phoneA&SIP/phoneB&SIP/phoneC [paging] exten => 500,1,Answer() same =>n,record(/tmp/page.wav) same =>n,originate(local/pageplayback@paging,exten,paging,page,1) exten => page,1,answer() same =>n,page(${phones_to_page})
exten => pageplayback,1,answer() same => Playback(/tmp/page.wav) Call File استشیسه ی ت ا ذ ت و ه call ا file ت اس ا سا ت غ ست تش ا سیضی ضذ ستمی ت خاسج اص سیست ذایت و ذ. Call ا file تا پس ذ.call ضش ع ی ض د تشای اخشا ی تایست ت سیش var/spool/asterisk/outgoing ا تما داد ی ض ذ. استشیسه ش حظ ای سیش سا ا یت س ی و ذ دس غ ست خ د callfileآ سا اخشا یى ذ. Call ا file داسای پاسا تش ای ا ی ی تاض ذ و ت ت ضیح آ ی پشداصی. ای پاسا تشضثی ت پاسا تش() dial ت د ت ع سو ی ت د س ش اص orginiating استفاد ی ض د: تشای تشلشاسی یه ت اس استفاد ی ض د. Channel: <channel>.1 ت ظ س ای ى یه channel ت extension خ د دسdialplan استثاط داد ض د اص پاسا تش ای صیش استفاد ی و ی. Context: <context> Extension: <exten> Priority: <priority> Application:<application> Data: <data> 2. channel ستمی ت یه applications سیشد ی ی ض د. MaxRetries: <number> اوضی تؼذاد دفؼا ت تالش تشای تىشاس ض اس یشی دس غ ست ػذ تشلشاسی ت اس. ا ش ت اس ت ش د ی ی fail وا ا ا اضغا تاضذ... ض اس یشی دذدا ا دا ی یشد. ض د ثال RetryTime: <number> فاغ ص ا ی تی ش تالش تشحسة ثا ی است. ت ع س پیص فشؼ ای مذاس 300 ثا ی ی تاضذ. WaitTime: <number> ذت ص ا ا تظاس ا ض خ سد و تش حسة ثا ی ی تاضذ.ت غ ست پیص فشؼ ای ص ا 45 ثا ی ی تاضذ. Callerid: <callerid> ػثاست است اص وا ش آیذی استفاد ضذ تشای تشلشاسی ت اس Account: <account>
دس غ ست مذاسد ی ای پاسا تش دس خذ CDR ایص داد ی ض د. Setvar: <var=value> ا ىا ت ظی یه یا چ ذ channel variable سا ی د ذ. Archive: <yes no> ت ع س ؼ پس اص اخشا استشیسه callfile ا سا اص سیش ف ق پان یى ذ دس غ ستی و ای پاسا تش setض د دس سیش var/spool/asterisk/outgoing_done فای ای اخشا ضذ وپی ی ض د یه خظ و تیا ش ضؼیت ت اس ی تاضذ دس ا ت ای Callfile ا اضاف ی ض د و ت غ ست صیش ی تاضذ. Expired Completed Failed > Status: Note: move *.call to /var/spool/asterisk/outgoing/ 1.call Channel: SIP/100 or (Channel: Local/100@from-internal) Application: Playback Data: hello-world ثا ( 2.call Channel: DAHDI/g0/09372693697 MaxRetries: 0 RetryTime: 15 WaitTime: 15 Application: AGI Data: test.php 3.call Channel: SIP/218 Callerid: 99999999999 MaxRetries: 10 RetryTime: 5 WaitTime: 20 Context: pa-call-file Extension: 100 Add the following options to etc/asterisk/extension_custom.conf [pa-call-file] exten => 100,1,Answer() exten => 100,n,Wait(1) exten => 100,n,Playback(pa-message) exten => 100,n,Wait(1) exten => 100,n,Hangup()
سرویسCallback در استریسک تؼذ اص ض اس یشی یه داخ ی ا ش ض اس مػذ اضغا تاضذ ت اس یش ذ دس غ ست ت ای ی ت ا ذت اس سا callback و ذ. یؼ ی ت ع س ات اتیه تؼذ اص آصاد ضذ مػذ ت اس تشلشاس ض د.ت ای یژ ی completion فت ی ض د. Call Completion و ت ع سو ی خفف (CCSS) Call Completion Supplementary Services ی تاضذ ت ػ ا یه لاتی یت خذیذ دس 1.8 asterisk ؼشفی ضذ است دس آخشی ت صیغ freepbx ت ػ ا یه optionدس تؼشیف داخ ی سد استفاد لشاس ی یشد. yealink دس تؼضی اص ipphone ث completion فؼا وشد. ت ػ ا یه لات یت feature تؼشیف ضذ است ی ت ا آ سا ا ا ض ا یض ی ت ا یذ تا dialplan یسی ای لات یت سا فؼا و یذ. 1 (دس سیش etc/asterisk/sip_custom.conf تشای داخ ی 2 خظ صیش سا اضاف ی و ی. [100]... cc_agent_policy = generic cc_monitor_policy = generic [200]... cc_agent_policy = generic cc_monitor_policy = generic 2( ت ع س ثا دس context صیش دس غ ست اضغا ت د داخ ی 100 یا 200 یا ػذ پاسخ یی پس اص 20 ثا ی ت اس hangup ی ض د حا ی ت ا تشای دس خ است فؼا ساصی سش یس completion اص وذ 30* استفاد و ی. [phones] exten => 7101,1,Dial(SIP/100,20) exten => 7102,1,Dial(SIP/200,20)
exten => *30,1,CallCompletionRequest() same =>n,playback(callbackisactive ) ; ; Dial *31 to cancel a call completion request. ; exten => *31,1,CallCompletionCancel() same =>n,playback(callbackisdeactive ) email: heydari@cytco.net support@cytco.net